// -*- mode: c++; coding: utf-8 -*-

#ifndef _TASK
#define _TASK

#include <Types.ice>

module Oreto {

  interface Task {
    /**
     * Set the task name.
     *
     * @ param name The new task name.
     **/
    void setName (string name);

    /**
     * Get the task name.
     *
     * @return The current task name.
     **/
    string getName ();

    /**
     * Set the task cost.
     *
     * @ param deadline The new task cost.
     **/
    void setCost (float cost);

    /**
     * Get the task cost.
     *
     * @return The current task cost.
     **/
    DateTime getCost ();

    /**
     * Set the task deadline.
     *
     * @ param deadline The new task deadline.
     **/
    void setDeadline (DateTime deadline);

    /**
     * Get the task deadline.
     *
     * @return The current task deadline.
     **/
    DateTime getDeadline ();

    /**
     * Set the task cost.
     *
     * @ param cost The new task cost.
     **/
    void setCost (float cost);

    /**
     * Get the task cost.
     *
     * @return The current task cost.
     **/
    float getCost ();

    /**
     * Set the task reward.
     *
     * @ param reward The new task reward.
     **/
    void setReward (TaskReward reward);

    /**
     * Get the task reward.
     *
     * @return The current task reward.
     **/
    TaskReward getReward ();

    /**
     * Set the task state.
     *
     * @ param state The new task state.
     **/
    void setState (TaskState state);

    /**
     * Get the task state.
     *
     * @return The current task state.
     **/
    TaskState getState ();
  };

};

#endif
